home *** CD-ROM | disk | FTP | other *** search
- /*
- * Source machine generated by GadToolsBox V2.0
- * which is (c) Copyright 1991-1993 Jaba Development
- *
- * GUI Designed by : Jan van den Baard
- */
-
- #include <exec/types.h>
- #include <intuition/intuition.h>
- #include <intuition/classes.h>
- #include <intuition/classusr.h>
- #include <intuition/imageclass.h>
- #include <intuition/gadgetclass.h>
- #include <intuition/intuitionbase.h>
- #include <libraries/gadtools.h>
- #include <libraries/iffparse.h>
- #include <libraries/asl.h>
- #include <graphics/displayinfo.h>
- #include <graphics/gfxbase.h>
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/asl_protos.h>
- #include <clib/iffparse_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/utility_protos.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
-
- #include <resources.h>
-
- #define CATCOMP_NUMBERS
-
- #include "project.catalog.h"
-
- #include "project.h"
- #include "Special.h"
-
- struct Window *ScreenPrefsWnd = NULL;
- struct Window *PalettePrefsWnd = NULL;
- struct Gadget *ScreenPrefsGList = NULL;
- struct Gadget *PalettePrefsGList = NULL;
- struct IntuiMessage ScreenPrefsMsg;
- struct IntuiMessage PalettePrefsMsg;
- UWORD ScreenPrefsZoom[4];
- UWORD PalettePrefsZoom[4];
- struct Gadget *ScreenPrefsGadgets[17];
- struct Gadget *PalettePrefsGadgets[8];
- UWORD ScreenPrefsLeft = 87;
- UWORD ScreenPrefsTop = 289;
- UWORD ScreenPrefsWidth = 409;
- UWORD ScreenPrefsHeight = 203;
- UWORD PalettePrefsLeft = 328;
- UWORD PalettePrefsTop = 122;
- UWORD PalettePrefsWidth = 455;
- UWORD PalettePrefsHeight = 165;
- UBYTE *ScreenPrefsWdt = (UBYTE *)"Project Handler : Screen Preferences 2.0";
- UBYTE *PalettePrefsWdt = (UBYTE *)"Project Handler : Palette Control 2.0";
-
- UBYTE *Type0Labels[] = {
- (UBYTE *)"Public",
- (UBYTE *)"Workbench",
- NULL };
-
- UBYTE *Overscan0Labels[] = {
- (UBYTE *)"Nominal",
- (UBYTE *)"Maximum",
- (UBYTE *)"Video",
- (UBYTE *)"Standard",
- (UBYTE *)"Text",
- NULL };
-
- extern struct MinList Pens1List;
-
- struct Node Pens1Nodes[] = {
- &Pens1Nodes[1], (struct Node *)&Pens1List.mlh_Head,0,0,"Block Pen",
- &Pens1Nodes[2], &Pens1Nodes[0],0,0,"Detail Pen",
- &Pens1Nodes[3], &Pens1Nodes[1], 0, 0, "Text Pen",
- &Pens1Nodes[4], &Pens1Nodes[2], 0, 0, "3D Bright Edge",
- &Pens1Nodes[5], &Pens1Nodes[3], 0, 0, "3D Dark Edge",
- &Pens1Nodes[6], &Pens1Nodes[4], 0, 0, "Active/Selected Fill",
- &Pens1Nodes[7], &Pens1Nodes[5], 0, 0, "Active/Selected Text",
- &Pens1Nodes[8], &Pens1Nodes[6], 0, 0, "Background Pen",
- &Pens1Nodes[9], &Pens1Nodes[7], 0, 0, "Highlight Text",
- &Pens1Nodes[10], &Pens1Nodes[8], 0, 0, "Text Menu",
- &Pens1Nodes[11], &Pens1Nodes[9], 0, 0, "Background Menu",
- ( struct Node * )&Pens1List.mlh_Tail, &Pens1Nodes[10], 0, 0, "Trim under Screen Bar" };
-
- struct MinList Pens1List = {
- ( struct MinNode * )&Pens1Nodes[0], ( struct MinNode * )NULL, ( struct MinNode * )&Pens1Nodes[8] };
-
- UWORD ScreenPrefsGTypes[] = {
- LISTVIEW_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- BUTTON_KIND,
- STRING_KIND,
- CYCLE_KIND,
- SCROLLER_KIND,
- INTEGER_KIND,
- SCROLLER_KIND,
- INTEGER_KIND,
- CYCLE_KIND,
- CHECKBOX_KIND,
- CHECKBOX_KIND,
- BUTTON_KIND,
- CHECKBOX_KIND
- };
-
- UWORD PalettePrefsGTypes[] = {
- LISTVIEW_KIND,
- PALETTE_KIND,
- PALETTE_KIND,
- SLIDER_KIND,
- SLIDER_KIND,
- SLIDER_KIND
- BUTTON_KIND,
- BUTTON_KIND,
- };
-
- struct NewGadget ScreenPrefsNGad[] = {
- 9, 48, 168, 130, (UBYTE *)"Display _ID", NULL, GD_DispID, PLACETEXT_ABOVE, NULL, (APTR)DispIDClicked,
- 26, 182, 96, 16, NULL, NULL, GD_Use, PLACETEXT_IN, NULL, (APTR)UseClicked,
- 142, 182, 96, 16, NULL, NULL, GD_Cancel, PLACETEXT_IN, NULL, (APTR)Cancel0Clicked,
- 264, 182, 111, 16, (UBYTE *)"_Restore Default", NULL, GD_Workbench, PLACETEXT_IN, NULL, (APTR)WorkbenchClicked,
- 288, 114, 111, 16, (UBYTE *)"_Palette", NULL, GD_Palette, PLACETEXT_IN, NULL, (APTR)Palette0Clicked,
- 195, 9, 204, 17, NULL, NULL, GD_PubName, 0, NULL, (APTR)PubNameClicked,
- 90, 9, 100, 17, (UBYTE *)"Screen _Type", NULL, GD_Type, PLACETEXT_LEFT, NULL, (APTR)TypeClicked,
- 297, 70, 102, 17, NULL, NULL, GD_ScrWidth, 0, NULL, (APTR)ScrWidth0Clicked,
- 248, 70, 44, 17, (UBYTE *)"_Width ", NULL, GD_Width, PLACETEXT_LEFT, NULL, (APTR)WidthClicked,
- 297, 92, 102, 17, NULL, NULL, GD_ScrHeight, 0, NULL, (APTR)ScrHeight0Clicked,
- 248, 92, 44, 17, (UBYTE *)"_Height", NULL, GD_Height, PLACETEXT_LEFT, NULL, (APTR)HeightClicked,
- 185, 48, 214, 17, (UBYTE *)"_Overscan", NULL, GD_Overscan, PLACETEXT_ABOVE, NULL, (APTR)OverscanClicked,
- 193, 114, 26, 11, (UBYTE *)"_Default", NULL, GD_DefPalette, PLACETEXT_RIGHT, NULL, (APTR)DefPaletteClicked,
- 193, 156, 26, 11, (UBYTE *)"Autos_croll", NULL, GD_Autoscroll, PLACETEXT_RIGHT, NULL, (APTR)AutoscrollClicked,
- 288, 135, 111, 16, (UBYTE *)"Select _Font", NULL, GD_Font, PLACETEXT_IN, NULL, (APTR)FontClicked,
- 193, 135, 26, 11, (UBYTE *)"S_ysFonts", NULL, GD_SysFonts, PLACETEXT_RIGHT, NULL, (APTR)SysFontsClicked
- };
-
- struct NewGadget PalettePrefsNGad[] = {
- 9, 23, 213, 100, (UBYTE *)"_Pen Attributes", NULL, GD_Pens, PLACETEXT_ABOVE, NULL, (APTR)PensClicked,
- 9, 118, 216, 20, NULL, NULL, GD_PenColors, 0, NULL, (APTR)PenColorsClicked,
- 232, 23, 216, 20, (UBYTE *)"Color _Table", NULL, GD_Table, PLACETEXT_ABOVE, NULL, (APTR)TableClicked,
- 280, 68, 136, 17, (UBYTE *)"_Red", NULL, GD_Red, PLACETEXT_ABOVE, NULL, (APTR)Red0Clicked,
- 280, 104, 136, 17, (UBYTE *)"_Green", NULL, GD_Green, PLACETEXT_ABOVE, NULL, (APTR)Green0Clicked,
- 280, 141, 136, 17, (UBYTE *)"_Blue", NULL, GD_Blue, PLACETEXT_ABOVE, NULL, (APTR)Blue0Clicked
- 26, 145, 96, 16, NULL, NULL, 11, PLACETEXT_IN, NULL, (APTR)Use1Clicked,
- 142, 145, 96, 16, NULL, NULL, 10, PLACETEXT_IN, NULL, (APTR)Cancel1Clicked,
- };
-
- ULONG ScreenPrefsGTags[] = {
- (GTLV_ShowSelected), NULL, (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GTST_MaxChars), 256, (TAG_DONE),
- (GTCY_Labels), (ULONG)&Type0Labels[ 0 ], (GT_Underscore), '_', (TAG_DONE),
- (GTSC_Arrows), 8, (PGA_Freedom), LORIENT_HORIZ, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (TAG_DONE),
- (GTIN_Number), 0, (GTIN_MaxChars), 10, (GT_Underscore), '_', (TAG_DONE),
- (GTSC_Arrows), 8, (PGA_Freedom), LORIENT_HORIZ, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (TAG_DONE),
- (GTIN_Number), 0, (GTIN_MaxChars), 10, (GT_Underscore), '_', (TAG_DONE),
- (GTCY_Labels), (ULONG)&Overscan0Labels[ 0 ], (GT_Underscore), '_', (TAG_DONE),
- (GTCB_Checked), TRUE, (GT_Underscore), '_', (TAG_DONE),
- (GTCB_Checked), TRUE, (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GTCB_Checked), TRUE, (GT_Underscore), '_', (TAG_DONE)
- };
-
- ULONG PalettePrefsGTags[] = {
- (GTLV_Labels), (ULONG)&Pens1List, (GTLV_Selected) , 0 , (GTLV_ShowSelected) , 0 , (GT_Underscore), '_', (TAG_DONE),
- (GTPA_Depth), 2, (GTPA_Color), 1, (GTPA_ColorOffset), 0, (GTPA_IndicatorWidth) , 16 , (TAG_DONE),
- (GTPA_Depth), 2, (GTPA_Color), 0, (GTPA_ColorOffset), 0, (GTPA_IndicatorWidth) , 16 , (GT_Underscore), '_', (TAG_DONE),
- (GTSL_Max), 255, (GTSL_MaxLevelLen), 10, (GTSL_LevelFormat), (ULONG)"%3ld", (GTSL_LevelPlace), (PLACETEXT_RIGHT), (PGA_Freedom), LORIENT_HORIZ, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (GT_Underscore), '_', (TAG_DONE),
- (GTSL_Max), 255, (GTSL_MaxLevelLen), 10, (GTSL_LevelFormat), (ULONG)"%3ld", (GTSL_LevelPlace), (PLACETEXT_RIGHT), (PGA_Freedom), LORIENT_HORIZ, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (GT_Underscore), '_', (TAG_DONE),
- (GTSL_Max), 255, (GTSL_MaxLevelLen), 10, (GTSL_LevelFormat), (ULONG)"%3ld", (GTSL_LevelPlace), (PLACETEXT_RIGHT), (PGA_Freedom), LORIENT_HORIZ, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- (GT_Underscore), '_', (TAG_DONE),
- };
-
-
- extern void ComputeFont( UWORD , UWORD );
-
- extern UWORD ComputeX( UWORD );
- extern UWORD ComputeY( UWORD );
-
- int HandleScreenPrefsIDCMP( void )
- {
- struct IntuiMessage *m;
- int (*func)(void);
- BOOL running = TRUE;
-
- while( ScreenPrefsWnd != NULL && (m = GT_GetIMsg( ScreenPrefsWnd->UserPort )) ) {
-
- CopyMem(( char * )m, ( char * )&ScreenPrefsMsg, (long)sizeof( struct IntuiMessage ));
-
- GT_ReplyIMsg( m );
-
- switch ( ScreenPrefsMsg.Class ) {
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh( ScreenPrefsWnd );
- GT_EndRefresh( ScreenPrefsWnd, TRUE );
- break;
-
- case IDCMP_VANILLAKEY:
- running = ScreenPrefsVanillaKey();
- break;
-
- case IDCMP_RAWKEY:
- if ( ScreenPrefsMsg.Code == 95 )
- ChargeAide( "WIN_Screen" );
- break;
-
- case IDCMP_MOUSEMOVE:
- case IDCMP_GADGETUP:
- case IDCMP_GADGETDOWN:
- func = ( void * )(( struct Gadget * )ScreenPrefsMsg.IAddress )->UserData;
- running = func();
- break;
-
- case IDCMP_MENUPICK:
- break;
- }
- }
- return( running );
- }
-
- int OpenScreenPrefsWindow( void )
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD wleft = ScreenPrefsLeft, wtop = ScreenPrefsTop, ww, wh;
-
- ComputeFont( ScreenPrefsWidth, ScreenPrefsHeight );
-
- ww = ComputeX( ScreenPrefsWidth );
- wh = ComputeY( ScreenPrefsHeight );
-
- if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
- if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
-
- if ( ! ( g = CreateContext( &ScreenPrefsGList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < ScreenPrefs_CNT; lc++ ) {
-
- CopyMem((char * )&ScreenPrefsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = Font;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = ComputeX( ng.ng_Width );
- ng.ng_Height = ComputeY( ng.ng_Height);
-
- ScreenPrefsGadgets[ lc ] = g = CreateGadgetA((ULONG)ScreenPrefsGTypes[ lc ], g, &ng, ( struct TagItem * )&ScreenPrefsGTags[ tc ] );
-
- while( ScreenPrefsGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
- ScreenPrefsZoom[0] = ScreenPrefsLeft;
- ScreenPrefsZoom[1] = ScreenPrefsTop;
- if ( ScreenPrefsWdt )
- ScreenPrefsZoom[2] = TextLength( &Scr->RastPort, (UBYTE *)ScreenPrefsWdt, strlen((char *)ScreenPrefsWdt )) + 80;
- else
- ScreenPrefsZoom[2] = 80L;
- ScreenPrefsZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( ScreenPrefsWnd = OpenWindowTags( NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww + OffX + Scr->WBorRight,
- WA_Height, wh + OffY + Scr->WBorBottom,
- WA_IDCMP, LISTVIEWIDCMP|BUTTONIDCMP|STRINGIDCMP|CYCLEIDCMP|SCROLLERIDCMP|ARROWIDCMP|INTEGERIDCMP|CHECKBOXIDCMP|
- IDCMP_MENUPICK|IDCMP_MOUSEMOVE|IDCMP_VANILLAKEY|IDCMP_RAWKEY|IDCMP_REFRESHWINDOW,
- WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
- WA_Gadgets, ScreenPrefsGList,
- WA_Title, ScreenPrefsWdt,
- WA_PubScreen, Scr,
- WA_Activate, TRUE,
- WA_Zoom, ScreenPrefsZoom,
- WA_AutoAdjust, TRUE,
- TAG_DONE )))
- return( 4L );
-
- GT_RefreshWindow( ScreenPrefsWnd, NULL );
-
- if ( ROMVersion >= 39 )
- LendMenus( ScreenPrefsWnd , ProjectWnd );
-
- return( 0L );
- }
-
- void CloseScreenPrefsWindow( void )
- {
- if ( ScreenPrefsWnd ) {
- CloseWindow( ScreenPrefsWnd );
- ScreenPrefsWnd = NULL;
- }
-
- if ( ScreenPrefsGList ) {
- FreeGadgets( ScreenPrefsGList );
- ScreenPrefsGList = NULL;
- }
- }
-
- int HandlePalettePrefsIDCMP( void )
- {
- struct IntuiMessage *m;
- int (*func)(void);
- BOOL running = TRUE;
-
- while( (PalettePrefsWnd != NULL) && (m = GT_GetIMsg( PalettePrefsWnd->UserPort )) ) {
-
- CopyMem(( char * )m, ( char * )&PalettePrefsMsg, (long)sizeof( struct IntuiMessage ));
-
- GT_ReplyIMsg( m );
-
- switch ( PalettePrefsMsg.Class ) {
-
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh( PalettePrefsWnd );
- GT_EndRefresh( PalettePrefsWnd, TRUE );
- break;
-
- case IDCMP_VANILLAKEY:
- running = PalettePrefsVanillaKey();
- break;
-
- case IDCMP_RAWKEY:
- if ( PalettePrefsMsg.Code == 95 )
- ChargeAide( "WIN_Palette" );
- break;
-
- case IDCMP_MOUSEMOVE:
- case IDCMP_GADGETUP:
- case IDCMP_GADGETDOWN:
- func = ( void * )(( struct Gadget * )PalettePrefsMsg.IAddress )->UserData;
- running = func();
- break;
- }
- }
- return( running );
- }
-
- int OpenPalettePrefsWindow( void )
- {
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD wleft = PalettePrefsLeft, wtop = PalettePrefsTop, ww, wh;
-
- ComputeFont( PalettePrefsWidth, PalettePrefsHeight );
-
- ww = ComputeX( PalettePrefsWidth );
- wh = ComputeY( PalettePrefsHeight );
-
- if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
- if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
-
- if ( ! ( g = CreateContext( &PalettePrefsGList )))
- return( 1L );
-
- for( lc = 0, tc = 0; lc < PalettePrefs_CNT; lc++ ) {
-
- CopyMem((char * )&PalettePrefsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = Font;
- ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
- ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
- ng.ng_Width = ComputeX( ng.ng_Width );
- ng.ng_Height = ComputeY( ng.ng_Height);
-
- PalettePrefsGadgets[ lc ] = g = CreateGadgetA((ULONG)PalettePrefsGTypes[ lc ], g, &ng, ( struct TagItem * )&PalettePrefsGTags[ tc ] );
-
- while( PalettePrefsGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- return( 2L );
- }
-
- PalettePrefsZoom[0] = PalettePrefsLeft;
- PalettePrefsZoom[1] = PalettePrefsTop;
- if ( PalettePrefsWdt )
- PalettePrefsZoom[2] = TextLength( &Scr->RastPort, (UBYTE *)PalettePrefsWdt, strlen((char *)PalettePrefsWdt )) + 80;
- else
- PalettePrefsZoom[2] = 80L;
- PalettePrefsZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( PalettePrefsWnd = OpenWindowTags( NULL,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Width, ww + OffX + Scr->WBorRight,
- WA_Height, wh + OffY + Scr->WBorBottom,
- WA_IDCMP, LISTVIEWIDCMP|PALETTEIDCMP|SLIDERIDCMP|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_MOUSEMOVE|IDCMP_RAWKEY,
- WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
- WA_Gadgets, PalettePrefsGList,
- WA_Title, PalettePrefsWdt,
- WA_PubScreen, Scr,
- WA_Activate, TRUE,
- WA_Zoom, PalettePrefsZoom,
- TAG_DONE )))
- return( 4L );
-
- GT_RefreshWindow( PalettePrefsWnd, NULL );
-
- if ( ROMVersion >= 39 )
- LendMenus( PalettePrefsWnd , ProjectWnd );
-
- return( 0L );
- }
-
- void ClosePalettePrefsWindow( void )
- {
- if ( PalettePrefsWnd ) {
- CloseWindow( PalettePrefsWnd );
- PalettePrefsWnd = NULL;
- }
-
- if ( PalettePrefsGList ) {
- FreeGadgets( PalettePrefsGList );
- PalettePrefsGList = NULL;
- }
- }
-
- struct List ScreenIDs;
- char *PublicName;
- UWORD Pens0[12],CurrentPen,OldPens0[12]; /* Ne pas changer les tailles comme ça, voir fct PaletteClicked */
- ULONG Colors0[4][3],OldColors0[4][3],CurrentColor; /* Idem */
- struct TextAttr Font0;
- UBYTE AutoScroll,Overscan,ScreenType;
- long DisplayIDNum,DisplayID,Width,Height;
- Point Res;
- BOOL DefaultColors=TRUE,DefaultFont=TRUE;
-
- void ActiveWB( BOOL act ) {
- GT_SetGadgetAttrs( ScreenPrefsGadgets[0] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[4] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[5] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[7] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[8] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[9] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[10] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[11] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[12] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[13] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[14] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[15] , ScreenPrefsWnd , NULL , GA_Disabled , act , TAG_DONE );
- }
-
- void UpdateDimension(void) {
- struct DimensionInfo DI;
- struct Rectangle *Rect;
-
- if ( GetDisplayInfoData( 0 , (UBYTE *)&DI , sizeof( struct DimensionInfo ) , DTAG_DIMS , DisplayID ) ) {
- switch( Overscan ) {
- case 0:
- Rect = &DI.Nominal;
- break;
- case 1:
- Rect = &DI.MaxOScan;
- break;
- case 2:
- Rect = &DI.VideoOScan;
- break;
- case 3:
- Rect = &DI.TxtOScan;
- break;
- case 4:
- Rect = &DI.StdOScan;
- }
- Width = Res.x = Rect->MaxX+1;
- Height = Res.y = Rect->MaxY+1;
- }
- if ( ScreenPrefsWnd ) {
- GT_SetGadgetAttrs( ScreenPrefsGadgets[8] , ScreenPrefsWnd , NULL , GTIN_Number , Width , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[10] , ScreenPrefsWnd , NULL , GTIN_Number , Height , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[7] , ScreenPrefsWnd , NULL , GTSC_Top , 0 , GTSC_Total , 16384-Res.x , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[9] , ScreenPrefsWnd , NULL , GTSC_Top , 0 , GTSC_Total , 16384-Res.y , TAG_DONE );
- }
- }
-
-
- int DispIDClicked( void )
- {
- long n = 0;
- struct ScreenNode *wn = ScreenIDs.lh_Head;
-
- while( wn->node.ln_Succ && n++<ScreenPrefsMsg.Code ) {
- wn = wn->node.ln_Succ;
- }
- if ( wn->node.ln_Succ )
- {
- DisplayID = wn->ID;
- DisplayIDNum = n;
- }
- UpdateDimension();
- }
-
- void ColorsTOTag32( ULONG *data ) {
- int i;
-
- *data++ = 4;
- *data++ = 0;
- for( i = 0;i<4;i++ ) {
- *data++ = Colors0[i][0]<<24;
- *data++ = Colors0[i][1]<<24;
- *data++ = Colors0[i][2]<<24;
- }
- }
-
- void ColorsTOTag4( struct ColorSpec *cs ) {
- int i;
-
- for( i = 0;i<4;i++ ) {
- cs->ColorIndex = i;
- cs->Red = (UWORD)Colors0[i][0]>>4;
- cs->Green = (UWORD)Colors0[i][1]>>4;
- cs->Blue = (UWORD)Colors0[i][2]>>4;
- cs++;
- }
- cs->ColorIndex = -1;
- }
-
- #define NUM_SCREEN_TAG 13
-
- void BuildScreenTags( void ) {
- ScreenTags = AllocateTagItems( NUM_SCREEN_TAG );
- ScreenTags[0].ti_Tag = SA_PubName;
- ScreenTags[0].ti_Data = strdup( PublicName );
- ScreenTags[1].ti_Tag = SA_Overscan;
- switch( Overscan ) {
- case 0:
- ScreenTags[1].ti_Data = 0;
- break;
- case 2:
- ScreenTags[1].ti_Data = OSCAN_VIDEO;
- break;
- case 1:
- ScreenTags[1].ti_Data = OSCAN_MAX;
- break;
- case 3:
- ScreenTags[1].ti_Data = OSCAN_TEXT;
- break;
- case 4:
- ScreenTags[1].ti_Data = OSCAN_STANDARD;
- break;
- }
- ScreenTags[2].ti_Tag = SA_FullPalette;
- ScreenTags[2].ti_Data = TRUE;
- ScreenTags[3].ti_Tag = SA_Type;
- if ( ScreenType )
- {
- ScreenTags[0].ti_Tag = TAG_IGNORE;
- ScreenTags[3].ti_Data = WBENCHSCREEN;
- }
- else
- ScreenTags[3].ti_Data = PUBLICSCREEN;
- ScreenTags[4].ti_Tag = SA_AutoScroll;
- ScreenTags[4].ti_Data = AutoScroll;
- ScreenTags[5].ti_Tag = SA_DisplayID;
- ScreenTags[5].ti_Data = DisplayID;
- ScreenTags[6].ti_Tag = SA_Width;
- if ( Width != Res.x )
- ScreenTags[6].ti_Data = (long)Width;
- else
- ScreenTags[6].ti_Data = STDSCREENWIDTH;
- ScreenTags[7].ti_Tag = SA_Height;
- if ( Height != Res.y )
- ScreenTags[7].ti_Data = (long)Height;
- else
- ScreenTags[7].ti_Data = STDSCREENHEIGHT;
- ScreenTags[8].ti_Tag = SA_Pens;
- ScreenTags[8].ti_Data = malloc(26);
- *((UWORD *)ScreenTags[8].ti_Data) = ~0;
- ScreenTags[9].ti_Tag = TAG_IGNORE;
- ScreenTags[10].ti_Tag = TAG_IGNORE;
- if ( !DefaultColors ) {
- ScreenTags[9].ti_Tag = SA_Colors;
- memcpy( (UWORD *)ScreenTags[8].ti_Data , Pens0 , 24 );
- ((UWORD *)ScreenTags[8].ti_Data)[12] = ~0;
- ScreenTags[9].ti_Data = malloc( 40 );
- ColorsTOTag4( (struct ColorSpec *)ScreenTags[9].ti_Data );
- ScreenTags[10].ti_Tag = SA_Colors32;
- ScreenTags[10].ti_Data = malloc( 56 );
- ColorsTOTag32( (ULONG *)ScreenTags[10].ti_Data );
- }
- if ( DefaultFont )
- ScreenTags[11].ti_Tag = SA_SysFont;
- else {
- ScreenTags[11].ti_Tag = SA_Font;
- ScreenTags[11].ti_Data = malloc( sizeof( struct TextAttr ) );
- memcpy( (void *)ScreenTags[11].ti_Data , &Font0 , sizeof( struct TextAttr ) );
- ((struct TextAttr *)ScreenTags[11].ti_Data)->ta_Name = strdup( Font0.ta_Name );
- }
- ScreenTags[12].ti_Tag = TAG_END;
- }
-
- void DeleteScreenTags( void ) {
- struct TagItem *ti;
-
- if ( ti = FindTagItem( SA_PubName , ScreenTags ) )
- free( (void *)ti->ti_Data );
- if ( ti = FindTagItem( SA_Colors , ScreenTags ) )
- free( (void *)ti->ti_Data );
- if ( ti = FindTagItem( SA_Colors32 , ScreenTags ) )
- free( (void *)ti->ti_Data );
- if ( ti = FindTagItem( SA_Pens , ScreenTags ) )
- free( (void *)ti->ti_Data );
- if ( ti = FindTagItem( SA_Font , ScreenTags ) ) {
- free( ((struct TextAttr *)ti->ti_Data)->ta_Name );
- free( (void *)ti->ti_Data );
- }
- FreeTagItems( ScreenTags );
- }
-
- void LoadScreenTags( struct IFFHandle *iff ) {
- struct StoredProperty *buf;
- struct TagItem *ti;
- char *fontname;
-
- PropChunk( iff , ID_SCRN , ID_TAGS );
- PropChunk( iff , ID_SCRN , ID_PENS );
- PropChunk( iff , ID_SCRN , ID_CLR2 );
- PropChunk( iff , ID_SCRN , ID_CLR4 );
- PropChunk( iff , ID_SCRN , ID_PUBN );
- PropChunk( iff , ID_SCRN , ID_FONT );
- StopOnExit( iff , ID_SCRN , ID_FORM );
- ParseIFF( iff , IFFPARSE_SCAN );
- if ( buf = FindProp( iff , ID_SCRN , ID_TAGS ) ) {
- DeleteScreenTags( );
- ScreenTags = AllocateTagItems( buf->sp_Size / sizeof( struct TagItem ) );
- memcpy( ScreenTags , buf->sp_Data , buf->sp_Size );
- if ( ti = FindTagItem( SA_PubName , ScreenTags ) )
- if ( buf = FindProp( iff , ID_SCRN , ID_PUBN ) )
- ti->ti_Data = strdup( buf->sp_Data );
- else
- ti->ti_Data = strdup( "DICE_Project_Handler" );
- if ( ti = FindTagItem( SA_Pens , ScreenTags ) )
- {
- if ( buf = FindProp( iff , ID_SCRN , ID_PENS ) )
- {
- ti->ti_Data = malloc( buf->sp_Size );
- memcpy( (void *)ti->ti_Data , buf->sp_Data , buf->sp_Size );
- }
- else
- {
- ti->ti_Data = malloc( 2 );
- *((UWORD *)ti->ti_Data) = ~0;
- }
- }
- if ( ti = FindTagItem( SA_Colors32 , ScreenTags ) )
- {
- if ( buf = FindProp( iff , ID_SCRN , ID_CLR4 ) )
- {
- ti->ti_Data = malloc( buf->sp_Size );
- memcpy( (void *)ti->ti_Data , buf->sp_Data , buf->sp_Size );
- }
- else
- {
- ti->ti_Tag = TAG_SKIP;
- Message( "No 24-Bits Colors data found !" , "Continue" );
- }
- }
- if ( ti = FindTagItem( SA_Colors , ScreenTags ) )
- {
- if ( buf = FindProp( iff , ID_SCRN , ID_CLR2 ) )
- {
- ti->ti_Data = malloc( buf->sp_Size );
- memcpy( (void *)ti->ti_Data , buf->sp_Data , buf->sp_Size );
- }
- else
- {
- ti->ti_Tag = TAG_SKIP;
- Message( "No 12-Bits Colors data found !" , "Continue" );
- }
- }
- if ( ti = FindTagItem( SA_Font , ScreenTags ) )
- {
- if ( buf = FindProp( iff , ID_SCRN , ID_FONT ) )
- {
- fontname = (char *)buf->sp_Data;
- ti->ti_Data = malloc( buf->sp_Size - strlen(fontname)-1 );
- memcpy( (void *)ti->ti_Data , &( (fontname)[strlen(fontname)+1] ) , buf->sp_Size-strlen(fontname)-1 );
- ((struct TextAttr *)ti->ti_Data)->ta_Name = strdup( fontname );
- }
- else
- {
- ti->ti_Tag = TAG_SKIP;
- Message( "No Screen Font data found !" , "Continue" );
- }
- }
- }
- }
-
- void SaveScreenTags( struct IFFHandle *iff ) {
- struct TagItem *ti;
- long data;
- BOOL PutTags;
-
- PushChunk( iff , ID_SCRN , ID_FORM , IFFSIZE_UNKNOWN );
- if ( ti = FindTagItem( SA_PubName , ScreenTags ) )
- if ( stricmp( (void *)( data = ti->ti_Data ) , "DICE_Project_Handler" ) != 0 )
- {
- PutTags = TRUE;
- PushChunk( iff , ID_SCRN , ID_PUBN , strlen( (char *)data ) + 1 );
- WriteChunkBytes( iff , (void *)data , strlen( (char *)data ) + 1 );
- PopChunk( iff );
- }
- if ( ti = FindTagItem( SA_Pens , ScreenTags ) )
- if ( *((UWORD *)(data = ti->ti_Data)) != ~0 )
- {
- PutTags = TRUE;
- PushChunk( iff , ID_SCRN , ID_PENS , 26 );
- WriteChunkBytes( iff , (void *)data , 26 );
- PopChunk( iff );
- }
- if ( ti = FindTagItem( SA_Colors , ScreenTags ) )
- if ( data = ti->ti_Data )
- {
- PutTags = TRUE;
- PushChunk( iff , ID_SCRN , ID_CLR2 , 40 );
- WriteChunkBytes( iff , (void *)data , 40 );
- PopChunk( iff );
- }
- if ( ti = FindTagItem( SA_Colors32 , ScreenTags ) )
- if ( data = ti->ti_Data )
- {
- PutTags = TRUE;
- PushChunk( iff , ID_SCRN , ID_CLR4 , 56 );
- WriteChunkBytes( iff , (void *)data , 56 );
- PopChunk( iff );
- }
- if ( ti = FindTagItem( SA_Font , ScreenTags ) )
- if ( data = ti->ti_Data )
- {
- PutTags = TRUE;
- PushChunk( iff , ID_SCRN , ID_FONT , IFFSIZE_UNKNOWN );
- WriteChunkBytes( iff , ((struct TextAttr *)data)->ta_Name , strlen( ((struct TextAttr *)data)->ta_Name ) + 1 );
- WriteChunkBytes( iff , (void *)data , sizeof(struct TextAttr) );
- PopChunk( iff );
- }
- if ( PutTags ) {
- PushChunk( iff , ID_SCRN , ID_TAGS , sizeof( struct TagItem )*NUM_SCREEN_TAG );
- WriteChunkBytes( iff , ScreenTags , sizeof(struct TagItem)*NUM_SCREEN_TAG );
- PopChunk( iff );
- }
- PopChunk( iff );
- }
-
- extern void AttachList(void);
- extern void DettachList(void);
- extern void CloseEverything( void );
-
- extern BOOL named;
-
- void CloseScreenPrefs( BOOL use ) {
- char *t;
-
- RemWinC( PalettePrefsWnd );
- RemWinC( ScreenPrefsWnd );
- ClosePalettePrefsWindow( );
- CloseScreenPrefsWindow( );
- if ( use ) {
- DeleteScreenTags( );
- BuildScreenTags( );
- DettachList( );
- CloseEverything( );
- CloseDownScreen( );
- if ( named )
- saved = FALSE;
- SetupScreen( );
- OpenProjectWindow( );
- AttachList( );
- AddWinC( ProjectWnd , HandleProjectIDCMP );
- t = strdup( ProjectPathName );
- ChangeProjectName( t );
- free( t );
- }
- if ( PublicName ) {
- free( PublicName );
- free( Font0.ta_Name );
- FreeScreenList( &ScreenIDs );
- PublicName = NULL;
- }
- }
-
- int Cancel0Clicked( void )
- {
- CloseScreenPrefs( FALSE );
- }
-
- void Use1Clicked( void ) {
- RemWinC( PalettePrefsWnd );
- ClosePalettePrefsWindow( );
- }
-
- int UseClicked( void )
- {
- Use1Clicked();
- CloseScreenPrefs( TRUE );
- }
-
- void SetThisColor( ULONG num ) {
- if ( ROMVersion >= 39 )
- SetRGB32( &IntuitionBase->ActiveScreen->ViewPort , num , Colors0[num][0]<<24 , Colors0[num][1]<<24 , Colors0[num][2]<<24 );
- else
- SetRGB4( &IntuitionBase->ActiveScreen->ViewPort , num , Colors0[num][0]>>4 , Colors0[num][1]>>4 , Colors0[num][2]>>4 );
- }
-
- void SetBackColor( void ) {
- ULONG i;
-
- for(i=0;i<4;i++)
- SetThisColor( i );
- }
-
- void Cancel1Clicked( void ) {
- memcpy( Pens0 , OldPens0 , 24 );
- memcpy( Colors0 , OldColors0 , 48 );
- SetBackColor( );
- Use1Clicked( );
- }
-
- void BuildDefScreen( struct TagItem * );
- void WindowCorrespond( void );
-
- int WorkbenchClicked( void )
- {
- Use1Clicked( );
- free( Font0.ta_Name );
- free( PublicName );
- BuildDefScreen( NULL );
- SetBackColor( );
- WindowCorrespond( );
- }
-
- void AffectColors( int num ) {
- GT_SetGadgetAttrs( PalettePrefsGadgets[3] , PalettePrefsWnd , NULL , GTSL_Level , (long)Colors0[num][0] , TAG_DONE );
- GT_SetGadgetAttrs( PalettePrefsGadgets[4] , PalettePrefsWnd , NULL , GTSL_Level , (long)Colors0[num][1] , TAG_DONE );
- GT_SetGadgetAttrs( PalettePrefsGadgets[5] , PalettePrefsWnd , NULL , GTSL_Level , (long)Colors0[num][2] , TAG_DONE );
- }
-
- int Palette0Clicked( void )
- {
- if ( !PalettePrefsWnd ) {
- if ( !OpenPalettePrefsWindow( ) ) {
- AddWinC( PalettePrefsWnd , HandlePalettePrefsIDCMP );
- GT_SetGadgetAttrs( PalettePrefsGadgets[1] , PalettePrefsWnd , NULL , GTPA_Color , Pens0[0] , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[12] , ScreenPrefsWnd , NULL , GTCB_Checked , FALSE , TAG_DONE );
- AffectColors( 0 );
- memcpy( OldPens0 , Pens0 , 24 );
- memcpy( OldColors0 , Colors0 , 48 );
- CurrentColor = CurrentPen = 0;
- DefaultColors = FALSE;
- }
- } else
- ActivateWindow( PalettePrefsWnd );
- }
-
- int PubNameClicked( void )
- {
- free( PublicName );
- PublicName = strdup( GetString( ScreenPrefsGadgets[5] ) );
- }
-
- int TypeClicked( void )
- {
- ScreenType = ScreenPrefsMsg.Code;
- ActiveWB( ScreenType );
- if ( ScreenType == FALSE )
- ActivateGadget( ScreenPrefsGadgets[5] , ScreenPrefsWnd , NULL );
- }
-
- int ScrWidth0Clicked( void )
- {
- Width = Res.x + ScreenPrefsMsg.Code;
- GT_SetGadgetAttrs( ScreenPrefsGadgets[8] , ScreenPrefsWnd , NULL , GTIN_Number , Width , TAG_DONE );
- }
-
- int WidthClicked( void )
- {
- Width = GetNumber( ScreenPrefsGadgets[8] );
- if ( Width < Res.x )
- Width = Res.x;
- GT_SetGadgetAttrs( ScreenPrefsGadgets[7] , ScreenPrefsWnd , NULL , GTSC_Top , Width - Res.x , TAG_DONE );
- }
-
- int ScrHeight0Clicked( void )
- {
- Height = Res.y + ScreenPrefsMsg.Code;
- GT_SetGadgetAttrs( ScreenPrefsGadgets[10] , ScreenPrefsWnd , NULL , GTIN_Number , Height , TAG_DONE );
- }
-
- int HeightClicked( void )
- {
- Height = GetNumber( ScreenPrefsGadgets[10] );
- if ( Height < Res.y )
- Height = Res.y;
- GT_SetGadgetAttrs( ScreenPrefsGadgets[9] , ScreenPrefsWnd , NULL , GTSC_Top , Height - Res.y , TAG_DONE );
- }
-
- int OverscanClicked( void )
- {
- Overscan = ScreenPrefsMsg.Code;
- UpdateDimension();
- }
-
- void ColorsInit( void );
-
- int DefPaletteClicked( void )
- {
- GT_SetGadgetAttrs( ScreenPrefsGadgets[12] , ScreenPrefsWnd , NULL , GTCB_Checked , TRUE , TAG_DONE );
- DefaultColors = TRUE;
- Use1Clicked( );
- ColorsInit( );
- SetBackColor( );
- }
-
- int AutoscrollClicked( void )
- {
- AutoScroll = 1 - AutoScroll;
- GT_SetGadgetAttrs( ScreenPrefsGadgets[13] , ScreenPrefsWnd , NULL , GTCB_Checked , AutoScroll , TAG_DONE );
- }
-
- int FontClicked( void )
- {
- struct FontRequester *fr;
-
- GT_SetGadgetAttrs( ScreenPrefsGadgets[15] , ScreenPrefsWnd , NULL , GTCB_Checked , FALSE , TAG_DONE );
- DefaultFont = FALSE;
- SleepWinC( );
- if ( fr = AskFonts( StrMessages[MSG_MESSAGE_ASK_FONT] , &Font0 ) ) {
- free( Font0.ta_Name );
- Font0.ta_Name = strdup( fr->fo_Attr.ta_Name );
- Font0.ta_YSize = fr->fo_Attr.ta_YSize;
- Font0.ta_Flags = fr->fo_Attr.ta_Flags;
- Font0.ta_Style = fr->fo_Attr.ta_Style;
- FreeAslRequest( fr );
- }
- AwakeWinC( );
- }
-
- int SysFontsClicked( void )
- {
- GT_SetGadgetAttrs( ScreenPrefsGadgets[15] , ScreenPrefsWnd , NULL , GTCB_Checked , TRUE , TAG_DONE );
- DefaultFont = TRUE;
- }
-
- int PensClicked( void )
- {
- CurrentPen = PalettePrefsMsg.Code;
- GT_SetGadgetAttrs( PalettePrefsGadgets[1] , PalettePrefsWnd , NULL , GTPA_Color , Pens0[CurrentPen] , TAG_DONE );
- }
-
- int PenColorsClicked( void )
- {
- Pens0[CurrentPen] = PalettePrefsMsg.Code;
- }
-
- int TableClicked( void )
- {
- CurrentColor = (long)PalettePrefsMsg.Code;
- AffectColors( (int)(CurrentColor) );
- }
-
- int Red0Clicked( void )
- {
- Colors0[CurrentColor][0] = PalettePrefsMsg.Code;
- SetThisColor( CurrentColor );
- }
-
- int Green0Clicked( void )
- {
- Colors0[CurrentColor][1] = PalettePrefsMsg.Code;
- SetThisColor( CurrentColor );
- }
-
- int Blue0Clicked( void )
- {
- Colors0[CurrentColor][2] = PalettePrefsMsg.Code;
- SetThisColor( CurrentColor );
- }
-
- int ScreenPrefsVanillaKey()
- {
- switch( ScreenPrefsMsg.Code ) {
- case 'i':
- case 'I':
- if ( isupper( (int)ScreenPrefsMsg.Code ) )
- DisplayIDNum++;
- else
- DisplayIDNum--;
- ScreenPrefsMsg.Code = DisplayIDNum;
- DispIDClicked( );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[0] , ScreenPrefsWnd , NULL , GTLV_Selected , DisplayIDNum , GTLV_Top , DisplayIDNum , TAG_DONE );
- break;
- case 'u':
- case 'U':
- UseClicked();
- break;
- case 'a':
- case 'A':
- Cancel0Clicked();
- break;
- case 'c':
- case 'C':
- AutoscrollClicked( );
- break;
- case 'p':
- case 'P':
- Palette0Clicked();
- break;
- case 't':
- case 'T':
- ScreenPrefsMsg.Code = 1 - ScreenType;
- TypeClicked();
- GT_SetGadgetAttrs( ScreenPrefsGadgets[6] , ScreenPrefsWnd , NULL , GTCY_Active , ScreenType , TAG_DONE );
- break;
- case 'w':
- case 'W':
- ActivateGadget( ScreenPrefsGadgets[8] , ScreenPrefsWnd , NULL );
- break;
- case 'h':
- case 'H':
- ActivateGadget( ScreenPrefsGadgets[10] , ScreenPrefsWnd , NULL );
- break;
- case 'o':
- case 'O':
- if ( isupper( ScreenPrefsMsg.Code ) )
- {
- if ( Overscan > 0 )
- Overscan --;
- }
- else
- {
- if ( Overscan < 3 )
- Overscan ++;
- }
- GT_SetGadgetAttrs( ScreenPrefsGadgets[11] , ScreenPrefsWnd , NULL , GTCY_Active , Overscan , TAG_DONE );
- UpdateDimension( );
- break;
- case 'd':
- case 'D':
- DefPaletteClicked();
- break;
- case 'f':
- case 'F':
- FontClicked();
- break;
- case 'y':
- case 'Y':
- SysFontsClicked();
- break;
- case 'r':
- case 'R':
- WorkbenchClicked( );
- break;
- }
- }
-
- int PalettePrefsVanillaKey()
- {
- switch( PalettePrefsMsg.Code ) {
- case 'p':
- case 'P':
- if ( isupper( PalettePrefsMsg.Code ) )
- {
- if ( CurrentPen > 0 )
- CurrentPen--;
- }
- else
- {
- if ( CurrentPen < 12 )
- CurrentPen++;
- }
- GT_SetGadgetAttrs( PalettePrefsGadgets[0] , PalettePrefsWnd , NULL , GTLV_Selected , CurrentPen , GTLV_Top , CurrentPen , TAG_DONE );
- PalettePrefsMsg.Code = CurrentPen;
- PensClicked( );
- break;
- case 't':
- case 'T':
- if ( isupper( PalettePrefsMsg.Code ) )
- {
- if ( CurrentColor > 0 )
- CurrentColor--;
- }
- else
- {
- if ( CurrentColor < 3 )
- CurrentColor++;
- }
- GT_SetGadgetAttrs( PalettePrefsGadgets[2] , PalettePrefsWnd , NULL , GTPA_Color , CurrentColor , TAG_DONE );
- AffectColors( CurrentColor );
- break;
- case 'r':
- case 'R':
- if ( isupper( PalettePrefsMsg.Code ) )
- {
- if ( Colors0[ CurrentColor ][0] > 0 )
- Colors0[CurrentColor][0]--;
- }
- else
- {
- if ( Colors0[CurrentColor][0] < 255 )
- Colors0[CurrentColor][0]++;
- }
- GT_SetGadgetAttrs( PalettePrefsGadgets[3] , PalettePrefsWnd , NULL , GTSL_Level , Colors0[CurrentColor][0] , TAG_DONE );
- SetThisColor( CurrentColor );
- break;
- case 'g':
- case 'G':
- if ( isupper( PalettePrefsMsg.Code ) )
- {
- if ( Colors0[ CurrentColor ][1] > 0 )
- Colors0[CurrentColor][1]--;
- }
- else
- {
- if ( Colors0[CurrentColor][1] < 255 )
- Colors0[CurrentColor][1]++;
- }
- GT_SetGadgetAttrs( PalettePrefsGadgets[4] , PalettePrefsWnd , NULL , GTSL_Level , Colors0[CurrentColor][1] , TAG_DONE );
- SetThisColor( CurrentColor );
- break;
- case 'b':
- case 'B':
- if ( isupper( PalettePrefsMsg.Code ) )
- {
- if ( Colors0[CurrentColor][2] > 0 )
- Colors0[CurrentColor][2]--;
- }
- else
- {
- if ( Colors0[CurrentColor][2] < 255 )
- Colors0[CurrentColor][2]++;
- }
- GT_SetGadgetAttrs( PalettePrefsGadgets[5] , PalettePrefsWnd , NULL , GTSL_Level , Colors0[CurrentColor][2] , TAG_DONE );
- SetThisColor( CurrentColor );
- break;
- case 'u':
- case 'U':
- Use1Clicked();
- break;
- case 'A':
- case 'a':
- Cancel1Clicked();
- break;
- }
- }
-
- #define winsignal(win) (1 << win->UserPort->mp_SigBit)
-
- void ColorsInit( void ) {
- struct Screen *WBScr;
- long i,val;
-
- WBScr = LockPubScreen( "Workbench" );
- if ( ROMVersion >= 39 ) {
- GetRGB32( WBScr->ViewPort.ColorMap , 0L , 4L , (ULONG *)Colors0 );
- for(i=0;i<4;i++)
- {
- Colors0[i][0] >>= 24;
- Colors0[i][1] >>= 24;
- Colors0[i][2] >>= 24;
- }
- }
- else
- {
- for(i=0;i<4;i++)
- {
- val = GetRGB4( WBScr->ViewPort.ColorMap , i );
- Colors0[i][0] = ( (val&0x0F00)>>4 ) + ( (val&0x0F00)>>8 );
- Colors0[i][1] = val&0x00F0 + ( (val&0x00F0)>>4 );
- Colors0[i][2] = ( (val&0x0F)<<4 ) + val&0x0F;
- }
- }
- UnlockPubScreen( "Workbench" , WBScr );
- }
-
- void Tag4TOColors( struct ColorSpec *cs ) {
- while( cs->ColorIndex != -1 ) {
- if ( cs->ColorIndex >= 0 && cs->ColorIndex < 4 ) {
- Colors0[cs->ColorIndex][0] = (cs->Red<<4)+cs->Red;
- Colors0[cs->ColorIndex][1] = (cs->Green<<4)+cs->Red;
- Colors0[cs->ColorIndex][2] = (cs->Blue<<4)+cs->Red;
- }
- DefaultColors = FALSE;
- cs++;
- }
- }
-
- void Tag32TOColors( ULONG *data ) {
- ULONG num = *data++ , index = *data++;
-
- while ( index < 4 && num-- ) {
- Colors0[index][0] = *data++>>24;
- Colors0[index][1] = *data++>>24;
- Colors0[index++][2] = *data++>>24;
- DefaultColors = FALSE;
- }
- }
-
- void PensInit( void ) {
- struct Screen *WBScr;
- struct DrawInfo *DI;
- int num;
-
- WBScr = LockPubScreen( "Workbench" );
- DI = GetScreenDrawInfo( WBScr );
- num = DI->dri_NumPens;
- if ( num>12 )
- num = 12;
- memcpy( Pens0 , DI->dri_Pens , num<<1 );
- FreeScreenDrawInfo( WBScr , DI );
- UnlockPubScreen( "Workbench" , WBScr );
- }
-
- void PensConvert( UWORD *pen ) {
- int num=0;
-
- if ( *pen != ~0 )
- DefaultColors = FALSE;
- while( *pen != ~0 && num<12 )
- Pens0[num++] = *pen++;
- }
-
- void BuildDefScreen( struct TagItem *intags )
- {
- long data;
- struct TagItem *ti;
-
- DisplayID = HIRES_KEY;
- if ( ti = FindTagItem( SA_DisplayID , intags ) )
- if ( data = ti->ti_Data )
- DisplayID = (long)data;
- DisplayIDNum = BuildScreenList( &ScreenIDs , DisplayID );
- PublicName = strdup( "DICE_Project_Handler" );
- if ( ti = FindTagItem( SA_PubName , intags ) )
- if ( data = ti->ti_Data ) {
- free( PublicName );
- PublicName = strdup( (char *)data );
- }
- Overscan = 0;
- if ( ti = FindTagItem( SA_Overscan , intags ) )
- switch( ti->ti_Data ) {
- case OSCAN_STANDARD:
- Overscan = 4;
- break;
- case OSCAN_TEXT:
- Overscan = 3;
- break;
- case OSCAN_MAX:
- Overscan = 1;
- break;
- case OSCAN_VIDEO:
- Overscan = 2;
- break;
- }
- ScreenType = 0;
- if ( ti = FindTagItem( SA_Type , intags ) )
- if ( ti->ti_Data == WBENCHSCREEN )
- ScreenType = 1;
- AutoScroll = TRUE;
- if ( ti = FindTagItem( SA_AutoScroll , intags ) )
- AutoScroll = (UBYTE)ti->ti_Data;
- Height = 200;
- Width = 724;
- Res.x = 724;
- Res.y = 200;
- UpdateDimension();
- if ( ti = FindTagItem( SA_Height , intags ) )
- if ( ti->ti_Data!=STDSCREENHEIGHT ) {
- Height = ti->ti_Data;
- }
- if ( ti = FindTagItem( SA_Width , intags ) )
- if ( ti->ti_Data!=STDSCREENWIDTH ) {
- Width = ti->ti_Data;
- }
- DefaultColors = TRUE;
- ColorsInit();
- if ( ti = FindTagItem( SA_Colors32 , intags ) )
- {
- if ( data = ti->ti_Data )
- Tag32TOColors( (ULONG *)data );
- }
- else if ( ti = FindTagItem( SA_Colors , intags ) )
- if ( data = ti->ti_Data )
- Tag4TOColors( (struct ColorSpec *)data );
- PensInit( );
- if ( ti = FindTagItem( SA_Pens , intags ) )
- if ( data = ti->ti_Data )
- PensConvert( (UWORD *)data );
- Font0.ta_Name = strdup( "times.font" );
- Font0.ta_YSize = 13;
- Font0.ta_Style = 0;
- DefaultFont = TRUE;
- if ( ti = FindTagItem( SA_Font , intags ) )
- if ( data = ti->ti_Data ) {
- DefaultFont = FALSE;
- free( Font0.ta_Name );
- memcpy( (void *)&Font0 , (void *)data , sizeof(struct TextAttr) );
- Font0.ta_Name = strdup( ((struct TextAttr *)data)->ta_Name );
- }
- }
-
- void WindowCorrespond( void ) {
- GT_SetGadgetAttrs( ScreenPrefsGadgets[0] , ScreenPrefsWnd , NULL , GTLV_Selected , DisplayIDNum , GTLV_Labels , &ScreenIDs , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[5] , ScreenPrefsWnd , NULL , GTST_String , PublicName , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[7] , ScreenPrefsWnd , NULL , GTSC_Top , Width-Res.x , GTSC_Total , 16384-Res.x , GTSC_Visible , 100 , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[8] , ScreenPrefsWnd , NULL , GTIN_Number , Width , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[9] , ScreenPrefsWnd , NULL , GTSC_Top , Height-Res.y , GTSC_Total , 16384-Res.y , GTSC_Visible , 100 , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[10] , ScreenPrefsWnd , NULL , GTIN_Number , Height , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[11] , ScreenPrefsWnd , NULL , GTCY_Active , Overscan , TAG_DONE );
- GT_SetGadgetAttrs( ScreenPrefsGadgets[13] , ScreenPrefsWnd , NULL , GTCB_Checked , AutoScroll , TAG_DONE );
- if ( !DefaultColors )
- GT_SetGadgetAttrs( ScreenPrefsGadgets[12] , ScreenPrefsWnd , NULL , GTCB_Checked , FALSE , TAG_DONE );
- else
- GT_SetGadgetAttrs( ScreenPrefsGadgets[12] , ScreenPrefsWnd , NULL , GTCB_Checked , TRUE , TAG_DONE );
- if ( !DefaultFont )
- GT_SetGadgetAttrs( ScreenPrefsGadgets[15] , ScreenPrefsWnd , NULL , GTCB_Checked , FALSE , TAG_DONE );
- else
- GT_SetGadgetAttrs( ScreenPrefsGadgets[15] , ScreenPrefsWnd , NULL , GTCB_Checked , TRUE , TAG_DONE );
- if ( ScreenType )
- {
- GT_SetGadgetAttrs( ScreenPrefsGadgets[6] , ScreenPrefsWnd , NULL , GTCY_Active , ScreenType , TAG_DONE );
- ActiveWB( TRUE );
- }
- }
-
-
- struct TagItem *ScreenPrefs( struct TagItem *intags ) {
- if ( !ScreenPrefsWnd ) {
- BuildDefScreen( intags );
- if ( !OpenScreenPrefsWindow( ) ) {
- WindowCorrespond( );
- AddWinC( ScreenPrefsWnd , HandleScreenPrefsIDCMP );
- }
- } else {
- WindowToFront( ScreenPrefsWnd );
- ActivateWindow( ScreenPrefsWnd );
- }
- }
-
-